package cm.tl.pms.entity;

import cm.tl.pms.common.annotation.Excel;
import cm.tl.pms.common.entity.BaseEntity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;

import java.math.BigDecimal;
import java.util.Date;

/**
 * 需求对象 biz_demand
 */
@TableName("biz_demand")
public class Demand extends BaseEntity {
    private static final long serialVersionUID = 1L;

    /**
     * 主键
     */
    @TableId(value = "id", type = IdType.AUTO)
    private Long id;

    /**
     * 需求编号
     */
    @Excel(name = "需求编号")
    private String code;

    /**
     * 需求名称
     */
    @Excel(name = "需求名称")
    private String name;

    /**
     * 需求描述
     */
    @Excel(name = "需求描述")
    private String desc;

    /**
     * 需求类型编码
     */
    @Excel(name = "需求类型编码")
    private Long typeCode;

    /**
     * 响应征集编码
     */
    @Excel(name = "响应征集编码")
    private Long demandRangeCode;

    /**
     * 是计划外
     */
    @Excel(name = "是计划外")
    private Long isPlan;

    /**
     * 关联系统
     */
    @Excel(name = "关联系统")
    private String relatedSystems;

    /**
     * 软硬件类型
     */
    @Excel(name = "软硬件类型")
    private Long hardSoftType;

    /**
     * 计划开展时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    @Excel(name = "计划开展时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date planStartTime;

    /**
     * 系统验收时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    @Excel(name = "系统验收时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date acceptanceTime;

    /**
     * 系统部署方式
     */
    @Excel(name = "系统部署方式")
    private Long deployment;

    /**
     * 联系人
     */
    @Excel(name = "联系人")
    private String contactPerson;

    /**
     * 联系方式
     */
    @Excel(name = "联系方式")
    private String contactInfo;

    /**
     * 预算金额(万元)
     */
    @Excel(name = "预算金额(万元)")
    private BigDecimal budgetAmount;

    /**
     * 系统建设成本(万元)
     */
    @Excel(name = "系统建设成本(万元)")
    private BigDecimal systemCost;

    /**
     * 资金来源
     */
    @Excel(name = "资金来源")
    private Long fundResource;

    /**
     * 父类id
     */
    @Excel(name = "父类id")
    private Long parentId;

    /**
     * 创建用户id
     */
    @Excel(name = "创建用户id")
    private String createBy;

    /**
     * 更新用户id
     */
    @Excel(name = "更新用户id")
    private String updateBy;

    /**
     * 单位id
     */
    @Excel(name = "单位id")
    private Long deptId;

    public void setId(Long id) {
        this.id = id;
    }

    public Long getId() {
        return id;
    }

    public void setCode(String code) {
        this.code = code;
    }

    public String getCode() {
        return code;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getName() {
        return name;
    }

    public void setDesc(String desc) {
        this.desc = desc;
    }

    public String getDesc() {
        return desc;
    }

    public void setTypeCode(Long typeCode) {
        this.typeCode = typeCode;
    }

    public Long getTypeCode() {
        return typeCode;
    }

    public void setDemandRangeCode(Long demandRangeCode) {
        this.demandRangeCode = demandRangeCode;
    }

    public Long getDemandRangeCode() {
        return demandRangeCode;
    }

    public void setIsPlan(Long isPlan) {
        this.isPlan = isPlan;
    }

    public Long getIsPlan() {
        return isPlan;
    }

    public void setRelatedSystems(String relatedSystems) {
        this.relatedSystems = relatedSystems;
    }

    public String getRelatedSystems() {
        return relatedSystems;
    }

    public void setHardSoftType(Long hardSoftType) {
        this.hardSoftType = hardSoftType;
    }

    public Long getHardSoftType() {
        return hardSoftType;
    }

    public void setPlanStartTime(Date planStartTime) {
        this.planStartTime = planStartTime;
    }

    public Date getPlanStartTime() {
        return planStartTime;
    }

    public void setAcceptanceTime(Date acceptanceTime) {
        this.acceptanceTime = acceptanceTime;
    }

    public Date getAcceptanceTime() {
        return acceptanceTime;
    }

    public void setDeployment(Long deployment) {
        this.deployment = deployment;
    }

    public Long getDeployment() {
        return deployment;
    }

    public void setContactPerson(String contactPerson) {
        this.contactPerson = contactPerson;
    }

    public String getContactPerson() {
        return contactPerson;
    }

    public void setContactInfo(String contactInfo) {
        this.contactInfo = contactInfo;
    }

    public String getContactInfo() {
        return contactInfo;
    }

    public void setBudgetAmount(BigDecimal budgetAmount) {
        this.budgetAmount = budgetAmount;
    }

    public BigDecimal getBudgetAmount() {
        return budgetAmount;
    }

    public void setSystemCost(BigDecimal systemCost) {
        this.systemCost = systemCost;
    }

    public BigDecimal getSystemCost() {
        return systemCost;
    }

    public void setFundResource(Long fundResource) {
        this.fundResource = fundResource;
    }

    public Long getFundResource() {
        return fundResource;
    }

    public void setParentId(Long parentId) {
        this.parentId = parentId;
    }

    public Long getParentId() {
        return parentId;
    }

    public void setCreateBy(String createBy) {
        this.createBy = createBy;
    }

    public String getCreateBy() {
        return createBy;
    }

    public void setUpdateBy(String updateBy) {
        this.updateBy = updateBy;
    }

    public String getUpdateBy() {
        return updateBy;
    }

    public void setDeptId(Long deptId) {
        this.deptId = deptId;
    }

    public Long getDeptId() {
        return deptId;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
                .append("id", getId())
                .append("code", getCode())
                .append("name", getName())
                .append("desc", getDesc())
                .append("typeCode", getTypeCode())
                .append("demandRangeCode", getDemandRangeCode())
                .append("isPlan", getIsPlan())
                .append("relatedSystems", getRelatedSystems())
                .append("hardSoftType", getHardSoftType())
                .append("planStartTime", getPlanStartTime())
                .append("acceptanceTime", getAcceptanceTime())
                .append("deployment", getDeployment())
                .append("contactPerson", getContactPerson())
                .append("contactInfo", getContactInfo())
                .append("budgetAmount", getBudgetAmount())
                .append("systemCost", getSystemCost())
                .append("fundResource", getFundResource())
                .append("parentId", getParentId())
                .append("remark", getRemark())
                .append("createTime", getCreateTime())
                .append("updateTime", getUpdateTime())
                .append("createUserId", getCreateBy())
                .append("updateUserId", getUpdateBy())
                .append("deptId", getDeptId())
                .toString();
    }
}
